package com.core.base.searchForm.enums;

import org.hibernate.criterion.MatchMode;

/**
 * 查询类型匹配
 * 
 * @author pt-chenqw
 *
 */
public enum SearchType {
	
	/**
	 * 从前面开始进行匹配
	 * like 后面加%
	 */
	LIKE_WITH_START(MatchMode.START),
	
	/**
	 * 从前面开始进行匹配
	 * like 前面加%
	 */
	LIKE_WITH_END(MatchMode.END),
	
	/**
	 * 从前面开始进行匹配
	 * like 两边加%
	 */
	LIKE_WITH_ANYWHERE(MatchMode.ANYWHERE),
	
	/**
	 * 精确匹配匹配
	 * like 两边都不加%
	 */
	LIKE_WITH_EXACT(MatchMode.EXACT),
	
	/**
	 * 从前面开始进行匹配
	 * not like 后面加%
	 */
	NOT_LIKE_WITH_START(MatchMode.START),
	
	/**
	 * 从前面开始进行匹配
	 * not like 前面加%
	 */
	NOT_LIKE_WITH_END(MatchMode.END),
	
	/**
	 * 从前面开始进行匹配
	 * not like 两边加%
	 */
	NOT_LIKE_WITH_ANYWHERE(MatchMode.ANYWHERE),
	
	/**
	 * 精确匹配匹配
	 * not like 两边都不加%
	 */
	NOT_LIKE_WITH_EXACT(MatchMode.EXACT),
	
	/**
	 * like 后面加%,从前面进行匹配,不区分大小写
	 */
	ILIKE_WITH_START(MatchMode.START),
	
	/**
	 * like 前面加%,从前面进行匹配,不区分大小写
	 */
	ILIKE_WITH_END(MatchMode.END),
	
	/**
	 * like 两边加%,从两边进行匹配,不区分大小写
	 */
	ILIKE_WITH_ANYWHERE(MatchMode.ANYWHERE),
	
	/**
	 * like 两边不加%,不区分大小写
	 */
	ILIKE_WITH_EXACT(MatchMode.EXACT),
	
	/**
	 * 等于
	 */
	EQ,
	
	/**
	 * 小于
	 */
	LT,
	
	/**
	 * 大于
	 */
	GT,
	
	/**
	 * 不等
	 */
	NE,
	
	/**
	 * 大于等于
	 */
	GE,
	
	/**
	 * 小于等于
	 */
	LE,
	
	/**
	 * IN
	 */
	IN,
	
	/**
	 * NOT IN
	 */
	NOT_IN,
	
	/**
	 * 是否为空
	 */
	IS_NULL,
	
	/**
	 * 是否不为空
	 */
	IS_NOT_NULL,
	
	/**
	 * 是否为空字符串
	 */
	EMPTY_STRING,
	
	/**
	 * 是否为不空字符串
	 */
	NOT_EMPTY_STRING,
	
	/**
	 * 不为空,且不为空字符串
	 */
	IS_NOT_NULL_AND_NOT_EMPTY_STRING,
	
	/**
	 * 为空,且为空字符串
	 */
	IS_NULL_AND_EMPTY_STRING,
	
	/**
	 * 等于或为null
	 */
	NULL_OR_EQ,
	
	/**
	 * 为null或者为空字符串
	 */
	NULL_OR_EMPTY,
	
	/**
	 * 为null或者不包含内容
	 */
	NULL_OR_NOT_LIKE_WITH_ANYWHERE;

	private MatchMode matchMode;
	
	private SearchType(){}
	
	public MatchMode getMatchMode() {
		return matchMode;
	}
	
	private SearchType(MatchMode matchMode){
		this.matchMode = matchMode;
	}
}
